package com.bluebridgecup.FundamentalsofDataStructures.StackAndQueue;

import java.util.Scanner;
import java.util.Stack;

// BracketValidator类用于验证括号序列的合法性
public class BracketValidator {
    public static void main(String[] args) {
        // 创建Scanner对象用于从控制台读取用户输入
        Scanner in = new Scanner(System.in);
        // 读取用户输入的括号序列长度
        int n = in.nextInt();
        // 读取用户输入的括号序列字符串
        String s = in.next();
        // 创建一个字符类型的栈，用于存储左括号
        Stack<Character> stack = new Stack<>();
        // 遍历输入的括号序列字符串
        for (int i = 0; i < s.length(); i++) {
            // 如果当前字符是左括号
            if (s.charAt(i) == '(') {
                // 将左括号压入栈中
                stack.push('(');
            } else {
                // 如果当前字符是右括号且栈为空，说明没有匹配的左括号
                if (stack.isEmpty()) {
                    // 输出 "No" 表示括号序列不合法，并结束程序
                    System.out.println("No");
                    return;
                }
                // 如果栈不为空，弹出栈顶的左括号，表示匹配成功
                stack.pop();
            }
        }
        // 遍历结束后，如果栈为空，说明所有括号都匹配，输出 "Yes"，否则输出 "No"
        System.out.println(stack.isEmpty() ? "Yes" : "No");
    }
}